package com.jeff.practice;

import java.util.ArrayList;
import java.util.List;

public class Test4 {
    /**
     * 给你一个含 n 个整数的数组 nums ，其中 nums[i] 在区间 [1, n] 内。
     * 请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字，并以数组的形式返回结果。
     */
    public List<Integer> findDisappearedNumbers(int[] nums) {
        ArrayList<Integer> result = new ArrayList<>();

        int n = nums.length;
        //定义一个新的数组,这个数组从1开始递增到n
        int[] newNums = new int[n];
        for (int i = 0; i < n; i++) {
            newNums[i] = i + 1;
        }

        //遍历nums,如果nums[i]在newNums中,则删除newNums[i]
        for (int num : nums) {
            for (int j = 0; j < n; j++) {
                if (num == newNums[j]) {
                    newNums[j] = 0;
                    break;
                }
            }
        }
        //遍历newNums,如果newNums[i] != 0,则将newNums[i]添加到结果数组中
        for (int i = 0; i < n; i++) {
            if (newNums[i] != 0) {
                //将newNums[i]添加到结果数组中
                result.add(newNums[i]);
            }
        }

        return result;

    }

    public static void main(String[] args) {
        int[] nums = {4, 3, 2, 7, 8, 2, 3, 1};
//        int[] nums = {1,1};
        Test4 test = new Test4();
        System.out.println(test.findDisappearedNumbers(nums));
    }
}
